var SAPDespesa={
    pathUrl:function(){
        return $('base').attr('href');
    },
    nameController:function(){
        var nomeController = "/"+$('base').attr('data-controller')+"/";
        return nomeController;
    },
    url:function(){
        return SAPDespesa.pathUrl()+SAPDespesa.nameController();
    },
    formatMoney:function(number) {
        var number = number.toString(),
            dollars = number.split('.')[0],
            cents = (number.split('.')[1] || '') +'00';
        dollars = dollars.split('').reverse().join('')
            .replace(/(\d{3}(?!$))/g, '$1.')
            .split('').reverse().join('');
        return dollars + ',' + cents.slice(0, 2);
    },
    getValueInput:function(param){
        var inputValue = $(param).val();
        return inputValue;
    },
    contasPagar:{
        parcelamento:function(){
            SAPDespesa.modal.close('#tela1');
            SAPDespesa.modal.open('#tela2');
            var dados = $("#PayReceiveNovaContaPagarForm").serialize();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"parcelamento",
                dataType:'json',
                data:dados,
                beforeSend:function(){},
                success:function(result){
                    jQuery('#sa-box-modal2-Content').html('').html(result.view);
                },
                error:function(){},
                complete:function(){}
            })
        },
        gerarReplicar:function(){
            var dados = $("#PayReceiveNovaContaPagarForm").serialize();
            var dadosParcelamento = $("#form-ContasPagarParcelamento").serialize();
            dados = dados+"&"+dadosParcelamento;
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"gerarReplicar",
                dataType:'json',
                data:dados,
                beforeSend:function(){
                    jQuery("#sa-table-listParcelas").find('tbody').html('');
                    jQuery("#sa-box-viewParcelas").addClass('hide').hide();
                },
                success:function(result){
                    var html='';
                    jQuery("#sa-box-viewParcelas").removeClass('hide').show();
                    jQuery.each(result.dados, function(key, value){
                        html = '<tr>' +
                            '<td class="col-md-6">'+value.dataVencimento+'</td>' +
                            '<td class="col-md-6">R$ '+value.valor+'</td>' +
                            '</tr>';
                        jQuery("#sa-table-listParcelas").find('tbody').append(html);
                    });
                },
                error:function(){},
                complete:function(){}
            })
        },
        novaConta:function(){
            jQuery.ajax({
                url:SAPDespesa.url()+"novaContaPagar",
                dataType:'json',
                beforeSend:function(){},
                success:function(result){
                    jQuery('#sa-box-modal-Content').html('').html(result.view);
                },
                error:function(){},
                complete:function(){}
            })
        },
        editConta:function(_param){
            jQuery.ajax({
                type:'get',
                url:SAPDespesa.url()+"editContaPagar/"+_param,
                dataType:'json',
                beforeSend:function(){},
                success:function(result){
                    jQuery('#sa-box-modal-Content').html('').html(result.view);
                },
                error:function(){},
                complete:function(){}
            })
        },
        salvaConta:function(){
            var dados = $("#PayReceiveNovaContaPagarForm").serialize();
            var dadosParcelamento = $("#form-ContasPagarParcelamento").serialize();
            dados = dados+"&"+dadosParcelamento;
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"novaContaPagar",
                dataType:'json',
                data:dados,
                beforeSend:function(){},
                success:function(result){
                    if(result.error == null || result.error == false){
                        alert(result.message);
                        location.reload();
                    }
                },
                error:function(){},
                complete:function(){}
            })
        },
        atualizarConta:function(){
            var dados = $("#PayReceiveEditContaPagarForm").serialize();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"editContaPagar",
                dataType:'json',
                data:dados,
                beforeSend:function(){},
                success:function(result){
                    if(result.error == null || result.error == false){
                        alert(result.message);
                        location.reload();
                    }
                },
                error:function(){},
                complete:function(){}
            })
        },
        pagarConta:function(_param,_mes){
            var idConta = jQuery('input[name="conta_'+_param+'" ]').val();
            var inputAno = jQuery('#sa-select-ContasReceber-Ano').find('option:selected').val();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"pagarConta",
                dataType:'json',
                data:{idConta:idConta,Mes:_mes,Ano:inputAno},
                beforeSend:function(){
                    jQuery("#sa-box-ContasPagar-tableList").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                    jQuery("#sa-box-ContasPagar-infoContaPagar").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                },
                success:function(result){
                    if(result.error == false){
                        jQuery('#sa-box-ContasPagar-tableList').html('').html(result.lista)
                        jQuery('#sa-box-ContasPagar-infoContaPagar').html('').html(result.valores);
                    }
                },
                error:function(){},
                complete:function(){}
            })
        },
        estornarConta:function(_param,_mes){
            var idConta = jQuery('input[name="conta_'+_param+'" ]').val();
            var inputAno = jQuery('#sa-select-ContasReceber-Ano').find('option:selected').val();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"estornarConta",
                dataType:'json',
                data:{idConta:idConta,Mes:_mes,Ano:inputAno},
                beforeSend:function(){
                    jQuery("#sa-box-ContasPagar-tableList").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                    jQuery("#sa-box-ContasPagar-infoContaPagar").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                },
                success:function(result){
                    if(result.error == false){
                        jQuery('#sa-box-ContasPagar-tableList').html('').html(result.lista)
                        jQuery('#sa-box-ContasPagar-infoContaPagar').html('').html(result.valores);
                    }
                },
                error:function(){},
                complete:function(){}
            })
        },
        listaContaMes:function(_param){
            var inputAno = jQuery('#sa-select-ContasReceber-Ano').find('option:selected').val();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"listaContaMes",
                dataType:'json',
                data:{Mes:_param,Ano:inputAno},
                beforeSend:function(){
                    jQuery("#sa-box-ContasPagar-tableList").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                },
                success:function(result){
                    if(result.error == false){
                        jQuery('#sa-box-ContasPagar-BtnMeses').html('').html(result.tabelaBtnMes)
                        jQuery('#sa-box-ContasPagar-tableList').html('').html(result.lista)
                    }
                },
                error:function(){},
                complete:function(){
                }
            })
        },
        somarValores:function(){
            /*var valorTotal = 0;
             jQuery('input[class="sa-chk-ContasPagar-valorConta"]').change(function(){
             if(jQuery(this).attr('checked')){
             valorTotal = parseFloat(valorTotal)+parseFloat(jQuery(this).attr('data-value'));
             }else{
             valorTotal = parseFloat(valorTotal)-parseFloat(jQuery(this).attr('data-value'));
             }
             valorTotal = valorTotal.toPrecision(10);
             valor = SAPDespesa.formatMoney(valorTotal);
             jQuery('.sa-box-ContasPagar-valorTotal').html('').html(valor);
             });*/
        },
        deleteAll:function(){
            var dados = jQuery('.sa-chk-ContasPagar-valorConta').serialize();
            jQuery.ajax({
                type:'post',
                url:SAPDespesa.url()+"DeleteAll",
                dataType:'json',
                data:dados,
                beforeSend:function(){
                    jQuery("#sa-box-ContasPagar-tableList").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                    jQuery("#sa-box-ContasPagar-infoContaPagar").append('<div class="sa-loading-box"><div id="status"><i class="fa fa-spinner fa-spin"></i></div></div>');
                },
                success:function(result){
                    if(result.code == null){
                        if(result.error == null || result.error == false){
                            SAPDespesa.msgGritter('Excluindo',result.message,'success');
                            jQuery('#sa-tr-ContasPagar-'+result.id).remove();
                            SAPDespesa.reloadTime(2000);
                            return true;
                        }else{
                            SAPDespesa.msgGritter('Excluindo',result.message,'success');
                            SAPDespesa.reloadTime(2000);
                            return false;
                        }
                    }
                    titulo = "Error: "+result.code;
                    mensagem = result.message+"\n"+result.name+"\n"+result.url;
                    SAPDespesa.msgGritter(titulo,mensagem,'danger');
                    SAPDespesa.reloadTime(2000);
                    return false;
                },
                error:function(){},
                complete:function(){}
            })
        }
    },
    modal:{
        open:function(_class){
            if(_class == null){
                alert('Houve um error ao informar o nome da tela de fechamento.');
                return false;
            }else{
                $(_class).modal({
                    keyboard:false,
                    backdrop:'static',
                    show:true
                });
            }
        },
        close:function(_class){
            if(_class == null){
                alert('Houve um error ao informar o nome da tela de fechamento.');
                return false;
            }else{
                $(_class).modal('hide');
            }
        },
        news:function(_class,tipo){
            switch(tipo){
                case 'lg':
                    classTipo = 'bs-example-modal-lg';
                    classSize = 'modal-lg';
                    break;
                default:
                    classTipo = 'bs-example-modal-static';
                    classSize = '';
                    break
            }
            $("#modalNew").addClass(_class+' '+classTipo);
            $("#modalNew").find('.modal-dialog').addClass(classSize);
        },
        body:function(result){
            $("#modalNew").find('.modal-dialog').find('.modal-content').html('').html(result);
        }
    },
    msgGritter:function(title,text,__class){
        if(__class == null){
            __class = ''
        }else{
            __class = 'growl-'+__class;
        }
        jQuery.gritter.add({
            title: title,
            text: text,
            class_name:__class,
            sticky: false,
            time: ''
        });
    },
    reloadTime:function(_time){
        setTimeout(function(){
            location.reload();
        },_time);
    },
    disabledDeleteAll:function(){
        var dados = jQuery('.sa-chk-ContasPagar-valorConta').serialize();
        if(dados == '' || dados == null){
            jQuery('#sa-btn-ContasPagar-DeleteAll').prop('disabled',true);
            return true;
        }else{
            jQuery('#sa-btn-ContasPagar-DeleteAll').prop('disabled',false);
            return false;
        }
    }

}

var valorTotal = 0;
jQuery(document).ready(function(){
    valorTotal = 0;
    jQuery("#sa-btn-NovaReceita").click(function(){
        SAPDespesa.modal.open('#tela1');
        SAPDespesa.contasPagar.novaConta();
    });
    jQuery(".chosen-select").chosen({'width':'100%','white-space':'nowrap'});
});

function pagarConta(i,m){
    jQuery('.sa-box-ContasPagar-valorTotal').html('').html('0,00');
    SAPDespesa.contasPagar.pagarConta(i,m);
}

function estornarConta(i,m){
    jQuery('.sa-box-ContasPagar-valorTotal').html('').html('0,00');
    SAPDespesa.contasPagar.estornarConta(i,m);
}

function listarContaMes(d){
    valorTotal = 0;
    jQuery('.sa-box-ContasPagar-valorTotal').html('').html('0,00');
    SAPDespesa.contasPagar.listaContaMes(d);
}

function editContaPagar(_param){
    SAPDespesa.modal.open('#tela1');
    SAPDespesa.contasPagar.editConta(_param);
}

function savePayReceive(){
    SAPDespesa.contasPagar.salvaConta();
    return false;
}

function updatePayReceive(){
    SAPDespesa.contasPagar.atualizarConta();
    return false;
}

function somarValor(e){
    var inputChecked = e.checked;
    if(inputChecked){
        valorTotal = parseFloat(valorTotal)+parseFloat(jQuery(e).attr('data-value'));
    }else{
        valorTotal = parseFloat(valorTotal)-parseFloat(jQuery(e).attr('data-value'));
    }
    valorTotal = valorTotal.toPrecision(10);
    valor = SAPDespesa.formatMoney(valorTotal);
    SAPDespesa.disabledDeleteAll();
    jQuery('.sa-box-ContasPagar-valorTotal').html('').html(valor);
}

function novaCategoria(){

}

function parcelamento(e){
    if(e.checked){
        var dataVencimento = SAPDespesa.getValueInput('input[name="data[PayReceive][data_vencimento]"]');
        var valorDoc = SAPDespesa.getValueInput('input[name="data[PayReceive][valor_doc]"]');
        if( dataVencimento == ''){
            alert('Informe a data de vencimento');
            e.checked = false;
            return false;
        }
        if(valorDoc == ''){
            alert('Informe o valor da conta');
            e.checked = false;
            return false;
        }
        SAPDespesa.contasPagar.parcelamento();
    }else{
        jQuery('#sa-box-modal2-Content').html('');
    }
}

function gerarReplicar(){
    SAPDespesa.contasPagar.gerarReplicar();
}

function modalClose(_param){
    SAPDespesa.modal.open('#tela1');
    SAPDespesa.modal.close('#'+_param);
}

function check_all(e){
    $('input:checkbox').not(e).prop('checked', e.checked);
    if(e.checked == true){
        var dados = $('.sa-chk-ContasPagar-valorConta').serializeArray();
        var obj = {};
        for(var i = 0,l = dados.length;i<l;i++){
            value = dados[i].value;
            valorTotal = parseFloat(valorTotal) + parseFloat(jQuery('#'+value).attr('data-value'));
            valorTotal = valorTotal.toPrecision(10);
            valor = SAPDespesa.formatMoney(valorTotal);
            jQuery('.sa-box-ContasPagar-valorTotal').html('').html(valor);
        }

        jQuery('#sa-box-DeleteAll').html('').html('<button type="button" onclick="deleteAll()" class="btn btn-danger" id="sa-btn-ContasPagar-DeleteAll"><span class="glyphicon glyphicon-trash"></span> Delete Todos</button>')
    }else{
        valorTotal = 0;
        valorTotal = valorTotal.toPrecision(10);
        valor = SAPDespesa.formatMoney(valorTotal);
        jQuery('.sa-box-ContasPagar-valorTotal').html('').html(valor);
        jQuery('#sa-box-DeleteAll').html('');
    }
}

function deleteAll(){
    if(SAPDespesa.disabledDeleteAll()==false){
        SAPDespesa.contasPagar.deleteAll();
    }

}